In recent years, computer systems have been developed to use multiple processors and multiple sets of memory circuits that are accessible to the multiple processors of the computer system. In some computer systems, each processor has access to both local memory (of that processor) and non-local memory (memory local to another processor or shared by multiple processors). A processor can access its local memory more efficiently (e.g., with less time between a request for data from the memory and receipt of that data from the memory) than non-local memory. Some systems are programmed so that a processor uses its local memory as much as possible, accessing non-local memory only when the memory requirements of that processor exceed the capacity of that local memory. In some cases, the combination of a processor and its local memory is characterized as a non-uniform memory access (NUMA) node. In some datacenters and enterprise software networks that implement virtual machines, a scheduler assigns the virtual machines to use particular NUMA nodes. In some cases, the assignments are temporary and a virtual machine can be assigned to different NUMA nodes at different times. In some cases, other processes of a host machine that implements the virtual machines are also assigned to NUMA nodes (e.g., by a load balancer). One type of process on a host machine that is assigned to NUMA nodes is a network queue (sometimes called a “queue”) of a physical network interface card (PNIC or NIC).
In the last few years, queue management systems have been proposed for distributing incoming and outgoing traffic to and from a host through a NIC with multiple queues. FIG. 1 illustrates one such system. Specifically, it illustrates (1) multiple virtual machines (VMs) 102 that execute on a host computer (not shown), and (2) a NIC 100 that has multiple queues. As shown in this figure, each queue has a receive side set 104 of buffers and a transmit side set 106 of buffers to handle respectively incoming and outgoing traffic. The system has four types of queues, which are: a default queue 105, several non-default queues 115, LRO (large receive offload) queues 120 and RSS (receive side scaling) queues 125. The latter two types of queues are specialty queues tied to specific hardware LRO and RSS functionalities supported by the NIC.